// import { defineAsyncComponent } from "vue";

// 动态导入所有组件的
export function loadAllComponentProps(modules, exclude = []) {
  // 创建一个映射，把模块路径映射到实际的组件
  // const components = {};
  const components = [];
  // console.warn("modules", modules);
  for (const path in modules) {
    try {
      // console.warn("path", path);
      const module = modules[path];
      const nodeDefault = module.default;

      // 过滤一些不需要的组件
      const regexPatterns = exclude;
      // 检查 componentName 是否符合任一正则表达式 排除
      const excludePattern = regexPatterns.some((regex) => {
        return regex.test(nodeDefault.label);
      });

      if (excludePattern) continue;

      components.push({
        isNode: true,
        ...nodeDefault,
      });
    } catch (e) {
      console.error("e", e);
    }

    // components[path] = {
    //   name: componentName,
    //   id: componentName,
    //   // 注意：这里我们使用了 () => 来创建一个新的作用域，确保每个模块都有自己的异步导入
    //   component: defineAsyncComponent(() => {
    //     return import(path);
    //   }),
    //   // 组件路径
    //   path: path,
    // };
  }

  return components;
}
